package astudy.util;

public class Combination {

	/**
	 *
	 * 返回组合c的下一个组合。组合中每个数都不超过指定的n。
	 * 
	 * @param n
	 * @param c
	 * @return
	 */
	public static int[] next(int n, int[] c) {
		
		int r = c.length;
		int j = -1;
		for (j = r-1; j > -1; j --) {
			if (c[j]<(n-r)+j) {
				break;
			}
		}
		if (j == -1) {
			return null;
		} else {
			int[] newC = new int[r];
			for (int i = 0; i < j; i ++) {
				newC[i] = c[i]; 
			}
			for (int i = j; i < r; i ++) {
				newC[i] = c[j] + (i-j+1);
			}
			return newC;
		}
	}
}
